刺桐[V2].js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. var rule = {
  2. title: '刺桐[V2]', // csp_AppYsV2
  3. host: 'http://cms.cttv.vip/api.php/app/',
  4. url: 'video?tid=fyclassfyfilter&limit=20&pg=fypage',
  5. filter_url: '&class={{fl.class}}&area={{fl.area}}&lang={{fl.lang}}&letter={{fl.letter}}&year={{fl.year}}&by={{fl.by}}',
  6. filter: {
  7. "1": [{ "key": "class", "name": "剧情", "value": [{ "n": "全部", "v": "" }, { "n": "喜剧", "v": "喜剧" }, { "n": "爱情", "v": "爱情" }, { "n": "恐怖", "v": "恐怖" }, { "n": "动作", "v": "动作" }, { "n": "科幻", "v": "科幻" }, { "n": "剧情", "v": "剧情" }, { "n": "战争", "v": "战争" }, { "n": "警匪", "v": "警匪" }, { "n": "犯罪", "v": "犯罪" }, { "n": "动画", "v": "动画" }, { "n": "奇幻", "v": "奇幻" }, { "n": "武侠", "v": "武侠" }, { "n": "冒险", "v": "冒险" }, { "n": "枪战", "v": "枪战" }, { "n": "恐怖", "v": "恐怖" }, { "n": "悬疑", "v": "悬疑" }, { "n": "惊悚", "v": "惊悚" }, { "n": "经典", "v": "经典" }, { "n": "青春", "v": "青春" }, { "n": "文艺", "v": "文艺" }, { "n": "微电影", "v": "微电影" }, { "n": "古装", "v": "古装" }, { "n": "历史", "v": "历史" }, { "n": "运动", "v": "运动" }, { "n": "农村", "v": "农村" }, { "n": "儿童", "v": "儿童" }, { "n": "网络电影", "v": "网络电影" }] }, { "key": "area", "name": "地区", "value": [{ "n": "全部", "v": "" }, { "n": "大陆", "v": "大陆" }, { "n": "香港", "v": "香港" }, { "n": "台湾", "v": "台湾" }, { "n": "美国", "v": "美国" }, { "n": "法国", "v": "法国" }, { "n": "英国", "v": "英国" }, { "n": "日本", "v": "日本" }, { "n": "韩国", "v": "韩国" }, { "n": "德国", "v": "德国" }, { "n": "泰国", "v": "泰国" }, { "n": "印度", "v": "印度" }, { "n": "意大利", "v": "意大利" }, { "n": "西班牙", "v": "西班牙" }, { "n": "加拿大", "v": "加拿大" }, { "n": "其他", "v": "其他" }] }, { "key": "lang", "name": "语言", "value": [{ "n": "全部", "v": "" }, { "n": "国语", "v": "国语" }, { "n": "英语", "v": "英语" }, { "n": "粤语", "v": "粤语" }, { "n": "闽南语", "v": "闽南语" }, { "n": "韩语", "v": "韩语" }, { "n": "日语", "v": "日语" }, { "n": "法语", "v": "法语" }, { "n": "德语", "v": "德语" }, { "n": "其它", "v": "其它" }] }, { "key": "year", "name": "年份", "value": [{ "n": "全部", "v": "" }, { "n": "2024", "v": "2024" }, { "n": "2023", "v": "2023" }, { "n": "2022", "v": "2022" }, { "n": "2021", "v": "2021" }, { "n": "2020", "v": "2020" }, { "n": "2019", "v": "2019" }, { "n": "2018", "v": "2018" }, { "n": "2017", "v": "2017" }, { "n": "2016", "v": "2016" }, { "n": "2015", "v": "2015" }, { "n": "2014", "v": "2014" }, { "n": "2013", "v": "2013" }, { "n": "2012", "v": "2012" }, { "n": "2011", "v": "2011" }, { "n": "2010", "v": "2010" }] }],
  8. "2": [{ "key": "class", "name": "剧情", "value": [{ "n": "全部", "v": "" }, { "n": "古装", "v": "古装" }, { "n": "战争", "v": "战争" }, { "n": "青春偶像", "v": "青春偶像" }, { "n": "喜剧", "v": "喜剧" }, { "n": "家庭", "v": "家庭" }, { "n": "犯罪", "v": "犯罪" }, { "n": "动作", "v": "动作" }, { "n": "奇幻", "v": "奇幻" }, { "n": "剧情", "v": "剧情" }, { "n": "历史", "v": "历史" }, { "n": "经典", "v": "经典" }, { "n": "乡村", "v": "乡村" }, { "n": "情景", "v": "情景" }, { "n": "商战", "v": "商战" }, { "n": "网剧", "v": "网剧" }, { "n": "其他", "v": "其他" }] }, { "key": "area", "name": "地区", "value": [{ "n": "全部", "v": "" }, { "n": "内地", "v": "内地" }, { "n": "韩国", "v": "韩国" }, { "n": "香港", "v": "香港" }, { "n": "台湾", "v": "台湾" }, { "n": "日本", "v": "日本" }, { "n": "美国", "v": "美国" }, { "n": "泰国", "v": "泰国" }, { "n": "英国", "v": "英国" }, { "n": "新加坡", "v": "新加坡" }, { "n": "其他", "v": "其他" }] }, { "key": "lang", "name": "语言", "value": [{ "n": "全部", "v": "" }, { "n": "国语", "v": "国语" }, { "n": "英语", "v": "英语" }, { "n": "粤语", "v": "粤语" }, { "n": "闽南语", "v": "闽南语" }, { "n": "韩语", "v": "韩语" }, { "n": "日语", "v": "日语" }, { "n": "其它", "v": "其它" }] }, { "key": "year", "name": "年份", "value": [{ "n": "全部", "v": "" }, { "n": "2024", "v": "2024" }, { "n": "2023", "v": "2023" }, { "n": "2022", "v": "2022" }, { "n": "2021", "v": "2021" }, { "n": "2020", "v": "2020" }, { "n": "2019", "v": "2019" }, { "n": "2018", "v": "2018" }, { "n": "2017", "v": "2017" }, { "n": "2016", "v": "2016" }, { "n": "2015", "v": "2015" }, { "n": "2014", "v": "2014" }, { "n": "2013", "v": "2013" }, { "n": "2012", "v": "2012" }, { "n": "2011", "v": "2011" }, { "n": "2010", "v": "2010" }, { "n": "2009", "v": "2009" }, { "n": "2008", "v": "2008" }, { "n": "2006", "v": "2006" }, { "n": "2005", "v": "2005" }, { "n": "2004", "v": "2004" }] }],
  9. "6": [{ "key": "class", "name": "剧情", "value": [{ "n": "全部", "v": "" }, { "n": "选秀", "v": "选秀" }, { "n": "情感", "v": "情感" }, { "n": "访谈", "v": "访谈" }, { "n": "播报", "v": "播报" }, { "n": "旅游", "v": "旅游" }, { "n": "音乐", "v": "音乐" }, { "n": "美食", "v": "美食" }, { "n": "纪实", "v": "纪实" }, { "n": "曲艺", "v": "曲艺" }, { "n": "生活", "v": "生活" }, { "n": "游戏互动", "v": "游戏互动" }, { "n": "财经", "v": "财经" }, { "n": "求职", "v": "求职" }] }, { "key": "area", "name": "地区", "value": [{ "n": "全部", "v": "" }, { "n": "内地", "v": "内地" }, { "n": "港台", "v": "港台" }, { "n": "日韩", "v": "日韩" }, { "n": "欧美", "v": "欧美" }] }, { "key": "lang", "name": "语言", "value": [{ "n": "全部", "v": "" }, { "n": "国语", "v": "国语" }, { "n": "英语", "v": "英语" }, { "n": "粤语", "v": "粤语" }, { "n": "闽南语", "v": "闽南语" }, { "n": "韩语", "v": "韩语" }, { "n": "日语", "v": "日语" }, { "n": "其它", "v": "其它" }] }, { "key": "year", "name": "年份", "value": [{ "n": "全部", "v": "" }, { "n": "2024", "v": "2024" }, { "n": "2023", "v": "2023" }, { "n": "2022", "v": "2022" }, { "n": "2021", "v": "2021" }, { "n": "2020", "v": "2020" }, { "n": "2019", "v": "2019" }, { "n": "2018", "v": "2018" }, { "n": "2017", "v": "2017" }, { "n": "2016", "v": "2016" }, { "n": "2015", "v": "2015" }, { "n": "2014", "v": "2014" }, { "n": "2013", "v": "2013" }, { "n": "2012", "v": "2012" }, { "n": "2011", "v": "2011" }, { "n": "2010", "v": "2010" }, { "n": "2009", "v": "2009" }, { "n": "2008", "v": "2008" }, { "n": "2007", "v": "2007" }, { "n": "2006", "v": "2006" }, { "n": "2005", "v": "2005" }, { "n": "2004", "v": "2004" }] }],
  10. "7": [{ "key": "class", "name": "剧情", "value": [{ "n": "全部", "v": "" }, { "n": "情感", "v": "情感" }, { "n": "科幻", "v": "科幻" }, { "n": "热血", "v": "热血" }, { "n": "推理", "v": "推理" }, { "n": "搞笑", "v": "搞笑" }, { "n": "冒险", "v": "冒险" }, { "n": "萝莉", "v": "萝莉" }, { "n": "校园", "v": "校园" }, { "n": "动作", "v": "动作" }, { "n": "机战", "v": "机战" }, { "n": "运动", "v": "运动" }, { "n": "战争", "v": "战争" }, { "n": "少年", "v": "少年" }, { "n": "少女", "v": "少女" }, { "n": "社会", "v": "社会" }, { "n": "原创", "v": "原创" }, { "n": "亲子", "v": "亲子" }, { "n": "益智", "v": "益智" }, { "n": "励志", "v": "励志" }, { "n": "其他", "v": "其他" }] }, { "key": "area", "name": "地区", "value": [{ "n": "全部", "v": "" }, { "n": "国产", "v": "国产" }, { "n": "日本", "v": "日本" }, { "n": "欧美", "v": "欧美" }, { "n": "其他", "v": "其他" }] }, { "key": "lang", "name": "语言", "value": [{ "n": "全部", "v": "" }, { "n": "国语", "v": "国语" }, { "n": "英语", "v": "英语" }, { "n": "粤语", "v": "粤语" }, { "n": "闽南语", "v": "闽南语" }, { "n": "韩语", "v": "韩语" }, { "n": "日语", "v": "日语" }, { "n": "其它", "v": "其它" }] }, { "key": "year", "name": "年份", "value": [{ "n": "全部", "v": "" }, { "n": "2024", "v": "2024" }, { "n": "2023", "v": "2023" }, { "n": "2022", "v": "2022" }, { "n": "2021", "v": "2021" }, { "n": "2020", "v": "2020" }, { "n": "2019", "v": "2019" }, { "n": "2018", "v": "2018" }, { "n": "2017", "v": "2017" }, { "n": "2016", "v": "2016" }, { "n": "2015", "v": "2015" }, { "n": "2014", "v": "2014" }, { "n": "2013", "v": "2013" }, { "n": "2012", "v": "2012" }, { "n": "2011", "v": "2011" }, { "n": "2010", "v": "2010" }, { "n": "2009", "v": "2009" }, { "n": "2008", "v": "2008" }, { "n": "2007", "v": "2007" }, { "n": "2006", "v": "2006" }, { "n": "2005", "v": "2005" }, { "n": "2004", "v": "2004" }] }]
  11. },
  12. detailUrl: '/detail?vod_id=fyid',
  13. searchUrl: '/search?text=**&pg=fypage',
  14. searchable: 2,
  15. quickSearch: 0,
  16. filterable: 1,//是否启用分类筛选,
  17. headers: { 'User-Agent': 'okhttp/4.1.0' },
  18. timeout: 5000,
  19. // 分类筛选 /api.php/app/nav || /xgapp.php/v1/nav || /api.php/v1.vod/types
  20. class_name: '电影&电视剧&综艺&动漫&记录片&电影解说&短剧',
  21. class_url: '1&2&6&7&20&21&22',
  22. play_parse: true,
  23. lazy: `js:
  24. let play_Url = '';
  25. if (/\\.m3u8|\\.mp4/.test(input)) {
  26. input = {
  27. jx: 0,
  28. url: input,
  29. parse: 0
  30. }
  31. } else if (/,/.test(input) && /url=/.test(input)) {
  32. input = input.split('url=');
  33. play_Url = input[0].split(',')[0];
  34. input = {
  35. jx: 0,
  36. url: input[1],
  37. playUrl: play_Url,
  38. parse: 1
  39. }
  40. } else if (/url=|id=/.test(input)) {
  41. input = {
  42. jx: 0,
  43. url: JSON.parse(request(input)).url,
  44. parse: 0
  45. }
  46. } else if (/youku|iqiyi|v\\.qq\\.com|pptv|sohu|le\\.com|1905\\.com|mgtv|bilibili|ixigua/.test(input)) {
  47. play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'https://jx.777jiexi.com/player/?url='; // type0的parse
  48. // play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'json:http://pandown.pro/app/kkdy.php?url='; // type1的parse可加'json:'直接解析url (除了蜂蜜的'影视TV',其它的壳皆可用)
  49. input = {
  50. jx: 0,
  51. url: input,
  52. playUrl: play_Url,
  53. parse: 1,
  54. header: JSON.stringify({
  55. 'user-agent': 'Mozilla/5.0',
  56. }),
  57. }
  58. } else {
  59. input
  60. }
  61. `,
  62. limit: 6,
  63. // 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
  64. 推荐: `js:
  65. let d = [];
  66. let jsondata = [];
  67. let videoList = [];
  68. if (/v1\\.vod/.test(HOST)) {
  69. if(HOST.endsWith('/')){
  70. jsondata = JSON.parse(request(HOST + 'vodPhbAll'));
  71. } else {
  72. jsondata = JSON.parse(request(HOST + '/vodPhbAll'));
  73. }
  74. videoList = jsondata.data.list;
  75. } else {
  76. if(HOST.endsWith('/')){
  77. jsondata = JSON.parse(request(HOST + 'index_video'));
  78. } else {
  79. jsondata = JSON.parse(request(HOST + '/index_video'));
  80. }
  81. videoList = /xgapp/.test(HOST) ? jsondata.data : jsondata.list;
  82. }
  83. // log('videoList =========> '+stringify(videoList));
  84. videoList.forEach((it,idex) => {
  85. let vlist = /v1\\.vod/.test(HOST) ? videoList[idex].vod_list : videoList[idex].vlist ;
  86. vlist.forEach(it => {
  87. d.push({
  88. url:it.vod_id,
  89. title:it.vod_name,
  90. img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
  91. desc:it.vod_remarks,
  92. });
  93. });
  94. });
  95. setResult(d);
  96. `,
  97. 一级: `js:
  98. let d = [];
  99. let jsondata = [];
  100. let videoList = [];
  101. if (/v1\\.vod/.test(HOST)) {
  102. input = input.replace('video','v1.vod').replace('tid','type').replace('pg=','page=');
  103. jsondata = JSON.parse(request(input));
  104. videoList = jsondata.data.list;
  105. } else {
  106. input = HOST + '/'+ input.split('/')[4];
  107. jsondata = JSON.parse(request(input));
  108. videoList = jsondata.list || jsondata.data;
  109. }
  110. // log('videoList =========> '+stringify(videoList));
  111. videoList.forEach(it => {
  112. d.push({
  113. url:it.vod_id,
  114. title:it.vod_name,
  115. img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
  116. desc:it.vod_remarks,
  117. });
  118. });
  119. setResult(d);
  120. `,
  121. 二级: `js:
  122. if (/v1\\.vod/.test(HOST)) {
  123. input = HOST + '/'+ input.split('/')[3];
  124. } else {
  125. input = HOST + '/'+ input.split('/')[3].replace('detail','video_detail').replace('vod_id','id');
  126. }
  127. try {
  128. let html = request(input);
  129. html = JSON.parse(html);
  130. let node = /xgapp/.test(HOST) ? html.data.vod_info : html.data;
  131. VOD = {
  132. vod_id: node.vod_id,
  133. vod_name: node.vod_name,
  134. vod_pic: node.vod_pic,
  135. type_name: node.vod_class,
  136. vod_year: node.vod_year,
  137. vod_area: node.vod_area,
  138. vod_remarks: node.vod_remarks,
  139. vod_actor: node.vod_actor,
  140. vod_director: node.vod_director,
  141. vod_content: node.vod_content.strip()
  142. };
  143. if (typeof play_url === 'undefined') {
  144. var play_url = ''
  145. }
  146. var name = {
  147. 'bfzym3u8': '暴风',
  148. '1080zyk': '优质',
  149. 'kuaikan': '快看',
  150. 'lzm3u8': '量子',
  151. 'ffm3u8': '非凡',
  152. 'feifan': '非凡2',
  153. 'haiwaikan': '海外看',
  154. 'gsm3u8': '光速',
  155. 'zuidam3u8': '最大',
  156. 'bjm3u8': '八戒',
  157. 'snm3u8': '索尼',
  158. 'wolong': '卧龙',
  159. 'xlm3u8': '新浪',
  160. 'yhm3u8': '樱花',
  161. 'tkm3u8': '天空',
  162. 'jsm3u8': '极速',
  163. 'wjm3u8': '无尽',
  164. 'sdm3u8': '闪电',
  165. 'kcm3u8': '快车',
  166. 'jinyingm3u8': '金鹰',
  167. 'fsm3u8': '飞速',
  168. 'tpm3u8': '淘片',
  169. 'lem3u8': '鱼乐',
  170. 'dbm3u8': '百度',
  171. 'tomm3u8': '番茄',
  172. 'ukm3u8': 'U酷',
  173. 'ikm3u8': '爱坤',
  174. 'hnzym3u8': '红牛资源',
  175. 'hnm3u8': '红牛',
  176. '68zy_m3u8': '68',
  177. 'kdm3u8': '酷点',
  178. 'bdxm3u8': '北斗星',
  179. 'qhm3u8': '奇虎',
  180. 'hhm3u8': '豪华',
  181. 'hhyun': '豪华2',
  182. 'kbm3u8': '快播',
  183. 'hym3u8': '虎牙',
  184. 'leshi': '乐视'
  185. };
  186. let episodes = /v1\\.vod/.test(HOST)?node.vod_play_list:node.vod_url_with_player;
  187. if (episodes != '') {
  188. let playMap = {};
  189. let arr = [];
  190. episodes.forEach(ep => {
  191. let from = [];
  192. if (/v1\\.vod/.test(HOST)) {
  193. from = ep.player_info.from||ep.player_info.show||ep.from||ep.show;
  194. } else {
  195. from = ep.code||ep.name;
  196. }
  197. if (!playMap.hasOwnProperty(from)) {
  198. playMap[from] = []
  199. }
  200. let parse_api = '';
  201. if (/v1\\.vod/.test(HOST)) {
  202. parse_api = ep.player_info.parse != null ? ep.player_info.parse : ep.player_info.parse2;
  203. // parse_api = /,/.test(parse_api) ? parse_api.split(',')[1] : parse_api;
  204. } else {
  205. parse_api = ep.parse_api;
  206. }
  207. log('parse_api =========> '+parse_api);
  208. if (parse_api != null && !/\\.m3u8|\\.mp4/.test(ep.url)) {
  209. parse_api = parse_api.replaceAll('..','.') ;
  210. ep.url = ep.url.replaceAll('$','$'+parse_api);
  211. }
  212. if (from != null) playMap[from].push(ep.url)
  213. });
  214. for (var key in playMap) {
  215. if ('bfzym3u8' == key) {
  216. arr.push({
  217. flag: name[key],
  218. url: playMap[key],
  219. sort: 1
  220. })
  221. } else if ('leshi' == key) {
  222. arr.push({
  223. flag: name[key],
  224. url: playMap[key],
  225. sort: 2
  226. })
  227. } else if ('1080zyk' == key) {
  228. arr.push({
  229. flag: name[key],
  230. url: playMap[key],
  231. sort: 2
  232. })
  233. } else if ('kuaikan' == key) {
  234. arr.push({
  235. flag: name[key],
  236. url: playMap[key],
  237. sort: 3
  238. })
  239. } else if ('lzm3u8' == key) {
  240. arr.push({
  241. flag: name[key],
  242. url: playMap[key],
  243. sort: 4
  244. })
  245. } else if ('ffm3u8' == key) {
  246. arr.push({
  247. flag: name[key],
  248. url: playMap[key],
  249. sort: 5
  250. })
  251. } else if ('feifan' == key) {
  252. arr.push({
  253. flag: name[key],
  254. url: playMap[key],
  255. sort: 5
  256. })
  257. } else if ('snm3u8' == key) {
  258. arr.push({
  259. flag: name[key],
  260. url: playMap[key],
  261. sort: 6
  262. })
  263. } else if ('qhm3u8' == key) {
  264. arr.push({
  265. flag: name[key],
  266. url: playMap[key],
  267. sort: 7
  268. })
  269. } else {
  270. arr.push({
  271. flag: name[key] ? name[key] : key,
  272. url: playMap[key],
  273. sort: 8
  274. })
  275. }
  276. }
  277. arr.sort((a, b) => a.sort - b.sort);
  278. let playFrom = [];
  279. let playList = [];
  280. arr.map(val => {
  281. if (!/undefined/.test(val.flag)) {
  282. playFrom.push(val.flag);
  283. playList.push(val.url);
  284. }
  285. })
  286. VOD.vod_play_from = playFrom.join('$$$');
  287. VOD.vod_play_url = playList.join('$$$');
  288. } else {
  289. VOD.vod_play_from = node.vod_play_from;
  290. VOD.vod_play_url = node.vod_play_url;
  291. }
  292. } catch (e) {
  293. log("获取二级详情页发生错误:" + e.message);
  294. }
  295. `,
  296. 搜索: `js:
  297. let d = [];
  298. let jsondata = [];
  299. let videoList = [];
  300. if (/v1\\.vod/.test(HOST)) {
  301. input = (HOST + '/'+ input.split('/')[3]).replace('/search','').replace('text=','wd=').replace('pg=','page=');
  302. jsondata = JSON.parse(request(input));
  303. videoList = jsondata.data.list;
  304. } else {
  305. input = HOST + '/'+ input.split('/')[3]
  306. jsondata = JSON.parse(request(input));
  307. videoList = jsondata.list || jsondata.data;
  308. }
  309. // log('videoList =========> '+stringify(videoList));
  310. videoList.forEach(it => {
  311. d.push({
  312. url:it.vod_id,
  313. title:it.vod_name,
  314. img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
  315. desc:it.vod_remarks,
  316. });
  317. });
  318. setResult(d);
  319. `,
  320. }